package TestesDoModel;

import model.MeusAmigos;
import model.Usuario;

import org.junit.*;

public class TestaMeusAmigos {
	MeusAmigos listaDeAmigos;
	Usuario usuario1;
	Usuario usuario2;
	
	@Before
	public void criaMeusAmigos(){
		listaDeAmigos = new MeusAmigos();
		usuario1 = new Usuario("Carlos", "carlos@gmail.com", new char[01234], "Rock"); 
		usuario2 = new Usuario("Jose", "jose@gmail.com", new char[56789], "Sertanejo");
	}
	
	@Test
	public void testaGetListaDeAmigos(){
		listaDeAmigos.addAmigo(usuario1);
		listaDeAmigos.addAmigo(usuario2);
		Assert.assertEquals("Objeto do tipo Usuario errado", usuario1, listaDeAmigos.getListaDeAmigos().get(0));
		Assert.assertEquals("Objeto do tipo Usuario errado", usuario2, listaDeAmigos.getListaDeAmigos().get(1));
	}
	
	@Test
	public void testaAddAmigo(){
		listaDeAmigos.addAmigo(usuario1);
		Assert.assertEquals("Objeto do tipo Usuario errado", usuario1, listaDeAmigos.getListaDeAmigos().get(0));
	}
	
	@Test
	public void testaRemoveAmigo() throws Exception{
		listaDeAmigos.addAmigo(usuario1);
		try{
			listaDeAmigos.removeAmigo(usuario2);
			Assert.fail("Deveria ocorrer um erro pois o usuario nao foi adicionado, entao nao pode ser removido");
		}
		catch(Exception e){
			Assert.assertEquals("Mensagem errada", "Esse usuario nao encontra-se na sua lista de amigos", e.getMessage());
		}
		listaDeAmigos.addAmigo(usuario2);
		listaDeAmigos.removeAmigo(usuario2);
		listaDeAmigos.removeAmigo(usuario1);
		try{
			listaDeAmigos.removeAmigo(usuario1);
			Assert.fail("Deveria ocorrer um erro pois o usuario1 ja foi removido");
		}
		catch(Exception e){
			Assert.assertEquals("Mensagem Errada", "Esse usuario nao encontra-se na sua lista de amigos", e.getMessage());
		}
	}
	
	@Test
	public void testaBuscaPeloNome(){
		listaDeAmigos.addAmigo(usuario1);
		Assert.assertEquals("Nome errado", usuario1, listaDeAmigos.buscaPeloNome("Carlos").get(0));
	}

}
